import { CSSProperties } from 'vue';

export interface IconProps {
  name: string; // 图标名称
  color?: string; // 颜色
  iconStyle?: CSSProperties; // css样式
  prefix?: string; // 前缀
  class?: string; // 样式
}

export interface Rules {
  req: boolean; // 是否必填
  message: string; // 消息内容
}

export interface InputProps {
  modelValue?: string | number; // 输入框值
  type: string; // 输入框类型
  placeholder?: string; // 描述
  iconSuffix?: string; // 右侧图标
  iconPrefix?: string; // 左侧图标
  rule?: Rules; // 校验信息
}

// 按钮组件属性
export interface ButtonProps {
  iconSuffix?: string; // 右侧图标
  iconPrefix: string; // 左侧图标
  type: string; // 按钮类型
  disabled: boolean; // 启用状态
  loading: boolean; // 按钮加载状态
  round: string; // 圆角大小
  theme: string; // 主题
  color: string; // 字体颜色
  hoverColor: string; // 选中后字体颜色
  size: '1rem'; // 文字大小
  style: CSSProperties; //自定义样式
}

export interface Message {
  icon?: string; // 图标
  theme?: string; // 主题
  msg?: string; // 内容
  close?: boolean; // 是否显示关闭按钮
  // eslint-disable-next-line @typescript-eslint/ban-types
  duration?: Function;
}

export interface MessageStyle {
  backgroundColor: string;
  color: string;
  icon: string;
}

export interface ErrorMessage {
  code: number; // 错误代码
  msg: string; // 小错误信息
}
